.\" Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License version 2 only, as
.\" published by the Free Software Foundation.
.\"
.\" This code is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
.\" version 2 for more details (a copy is included in the LICENSE file that
.\" accompanied this code).
.\"
.\" You should have received a copy of the GNU General Public License version
.\" 2 along with this work; if not, write to the Free Software Foundation,
.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
.\" Automatically generated by Pandoc 2.19.2
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[R]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "JRUNSCRIPT" "1" "2023" "JDK 21" "JDK Commands"
.hy
.SH NAME
.PP
jrunscript - run a command-line script shell that supports interactive
and batch modes
.SH SYNOPSIS
.PP
\f[B]Note:\f[R]
.PP
This tool is \f[B]experimental\f[R] and unsupported.
.PP
\f[V]jrunscript\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]]
.TP
\f[I]options\f[R]
This represents the \f[V]jrunscript\f[R] command-line options that can
be used.
See \f[B]Options for the jrunscript Command\f[R].
.TP
\f[I]arguments\f[R]
Arguments, when used, follow immediately after options or the command
name.
See \f[B]Arguments\f[R].
.SH DESCRIPTION
.PP
The \f[V]jrunscript\f[R] command is a language-independent command-line
script shell.
The \f[V]jrunscript\f[R] command supports both an interactive
(read-eval-print) mode and a batch (\f[V]-f\f[R] option) mode of script
execution.
By default, JavaScript is the language used, but the \f[V]-l\f[R] option
can be used to specify a different language.
By using Java to scripting language communication, the
\f[V]jrunscript\f[R] command supports an exploratory programming style.
.PP
If JavaScript is used, then before it evaluates a user defined script,
the \f[V]jrunscript\f[R] command initializes certain built-in functions
and objects, which are documented in the API Specification for
\f[V]jrunscript\f[R] JavaScript built-in functions.
.SH OPTIONS FOR THE JRUNSCRIPT COMMAND
.TP
\f[V]-cp\f[R] \f[I]path\f[R] or \f[V]-classpath\f[R] \f[I]path\f[R]
Indicates where any class files are that the script needs to access.
.TP
\f[V]-D\f[R]\f[I]name\f[R]\f[V]=\f[R]\f[I]value\f[R]
Sets a Java system property.
.TP
\f[V]-J\f[R]\f[I]flag\f[R]
Passes \f[I]flag\f[R] directly to the Java Virtual Machine where the
\f[V]jrunscript\f[R] command is running.
.TP
\f[V]-l\f[R] \f[I]language\f[R]
Uses the specified scripting language.
By default, JavaScript is used.
To use other scripting languages, you must specify the corresponding
script engine\[aq]s JAR file with the \f[V]-cp\f[R] or
\f[V]-classpath\f[R] option.
.TP
\f[V]-e\f[R] \f[I]script\f[R]
Evaluates the specified script.
This option can be used to run one-line scripts that are specified
completely on the command line.
.TP
\f[V]-encoding\f[R] \f[I]encoding\f[R]
Specifies the character encoding used to read script files.
.TP
\f[V]-f\f[R] \f[I]script-file\f[R]
Evaluates the specified script file (batch mode).
.TP
\f[V]-f -\f[R]
Enters interactive mode to read and evaluate a script from standard
input.
.TP
\f[V]-help\f[R] or \f[V]-?\f[R]
Displays a help message and exits.
.TP
\f[V]-q\f[R]
Lists all script engines available and exits.
.SH ARGUMENTS
.PP
If arguments are present and if no \f[V]-e\f[R] or \f[V]-f\f[R] option
is used, then the first argument is the script file and the rest of the
arguments, if any, are passed as script arguments.
If arguments and the \f[V]-e\f[R] or the \f[V]-f\f[R] option are used,
then all arguments are passed as script arguments.
If arguments \f[V]-e\f[R] and \f[V]-f\f[R] are missing, then the
interactive mode is used.
.SH EXAMPLE OF EXECUTING INLINE SCRIPTS
.RS
.PP
\f[V]jrunscript -e \[dq]print(\[aq]hello world\[aq])\[dq]\f[R]
.RE
.RS
.PP
\f[V]jrunscript -e \[dq]cat(\[aq]http://www.example.com\[aq])\[dq]\f[R]
.RE
.SH EXAMPLE OF USING SPECIFIED LANGUAGE AND EVALUATE THE SCRIPT FILE
.RS
.PP
\f[V]jrunscript -l js -f test.js\f[R]
.RE
.SH EXAMPLE OF INTERACTIVE MODE
.IP
.nf
\f[CB]
jrunscript
js> print(\[aq]Hello World\[rs]n\[aq]);
Hello World
js> 34 + 55
89.0
js> t = new java.lang.Thread(function() { print(\[aq]Hello World\[rs]n\[aq]); })
Thread[Thread-0,5,main]
js> t.start()
js> Hello World

js>
\f[R]
.fi
.SH RUN SCRIPT FILE WITH SCRIPT ARGUMENTS
.PP
In this example, the \f[V]test.js\f[R] file is the script file.
The \f[V]arg1\f[R], \f[V]arg2\f[R], and \f[V]arg3\f[R] arguments are
passed to the script.
The script can access these arguments with an arguments array.
.RS
.PP
\f[V]jrunscript test.js arg1 arg2 arg3\f[R]
.RE
